home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #1 / Amiga Plus 1995 #1.iso / fish-disketten / fish_941-950 / d949 / bbbbs / bbbbs65.lha / rexx / BBBBSdemon.baud < prev    next >
Text File  |  1993-06-24  |  3KB  |  82 lines

  1. /* $VER: BBBBSdemon.baud 6.0 (24.6.93)
  2.  
  3. USAGE: run rx BBBBSdemon.baud   ; run after BaudBandit is running
  4.  
  5. This program handles those cases where BBBBS might fail to properly
  6. log-off after a disconnect during transfer or message entry.
  7. (The classic case is a hangup during message entry, followed by
  8. numerous "RING"s... The BBS sees the RING and thinks the user is
  9. still entering text, so it doesn't close the buffer!)
  10.  
  11. Reboots after about 10 minutes (5 decreasing checks) if the user
  12. didn't logout (BBS_level~=''), and there is no carrier.
  13.  
  14. Does nothing the 1st time, then tries closing the buffer,
  15. and finally, on the third check, tries CTRL-C & ESC (nasty reset!).
  16. If all this fails to reset the BBS, the program boot is
  17. run if is found in the C: directory.
  18.  
  19. */
  20.  
  21.  
  22. IF SHOW('P','BBBBS_DEMON') THEN EXIT
  23. CALL OPENPORT('BBBBS_DEMON')
  24. CR='0D'x
  25. chances=1
  26. DO WHILE chances<7              /* 5 checks */
  27.   CALL DELAY(50*300%chances)    /* pauses get shorter with trouble */
  28.   p=GETPKT('BBBBS_DEMON')       /* ANY message means time to quit */
  29.   IF p~='0000 0000'x THEN
  30.     DO WHILE p~='0000 0000'x    /* empty the port */
  31.       DO
  32.         t=REPLY(p,0)
  33.         p=GETPKT('BBBBS_DEMON')
  34.       END
  35.       chances=7                 /* ... and quit */
  36.     END
  37.   ELSE IF GETCLIP('BBS_level')='' | ~SHOW('P','BBBBS') THEN
  38.     chances=1   /* inactive bbs */
  39.   ELSE
  40.     DO
  41.       ADDRESS BAUD
  42.       dcd
  43.       IF RC=0 THEN
  44.         DO
  45.           chances=chances+1                   /* no carrier, so... */
  46.           IF chances=3 THEN
  47.             DO
  48.               Send '\r/E\r'   /* be sure buffer is closed */
  49.               IF GETCLIP('BBS_level')~='' THEN
  50.                 DO
  51.                   CALL DELAY(100)
  52.                   Send '\ah'
  53.                 END
  54.             END
  55.           IF chances=4 THEN Send '\e'      /* ESCape to stop transfer */
  56.           IF chances=5 THEN Send '\aB'     /* Tell BB to abort ARexx */
  57.           IF chances=6 THEN                /* time to die */
  58.             DO
  59.               SAY 'BBBBS_Demon calling reboot in 20 seconds...'
  60.               Send '\rBBBBS_Demon calling reboot in 20 seconds...\r'
  61.               chances=1
  62.               bbspath=GETCLIP('BBS_path')
  63.               IF bbspath~='' THEN
  64.                 ADDRESS COMMAND 'date >'bbspath'Numbers/LastDemonBoot'
  65.               IF EXISTS(bbspath'Sounds/Alert') THEN
  66.                 ADDRESS COMMAND 'c:sound' bbspath'Sounds/Alert 5'
  67.               IF EXISTS('c:boot') THEN
  68.                 DO
  69.                   CALL DELAY(250)
  70.                   ADDRESS COMMAND boot
  71.                 END
  72.             END
  73.         END
  74.       ELSE chances=1
  75.       ADDRESS
  76.     END
  77. END
  78. CALL CLOSEPORT('BBBBS_DEMON')
  79. EXIT
  80.  
  81. /* BBBBSdemon.baud */
  82.